home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-05-21 | 2.5 KB | 132 lines | [TEXT/MPS ] |
- #include <Types.h>
- #include <QuickDraw.h>
- #include <Windows.h>
- #include <Events.h>
- #include <ToolUtils.h>
- #include <StdLib.h>
-
- #include "DisplList.h"
-
- TObjLink::TObjLink(TObjLink *n, TDisplObj *v)
- {
- fNext = n; fmyObj = v;
- }
-
- TObjList::TObjList(void)
- {
- fHeader = nil; fNumObjs = 0;
- }
-
- TObjList::~TObjList(void)
- {
- TObjLink* temp;
- while (fHeader != nil)
- {
- temp = fHeader->GetNext();
- delete fHeader->GetmyObj();
- delete fHeader;
- fHeader = temp;
- }
- fNumObjs = 0;
- }
-
- void TObjList::AddObj(TDisplObj* obj)
- {
- if (obj != nil)
- {
- TObjLink* temp;
- temp = new TObjLink(fHeader,obj);
- fHeader = temp;
- fNumObjs++;
- }
- }
-
- TDisplObj* TObjList::FindObj(Point theLoc)
- {
- TObjLink* temp;
- Rect theRect;
-
- for (temp = fHeader; temp != nil; temp = temp->GetNext())
- { theRect = temp->GetmyObj()->GetBoundRect();
- if (PtInRect(theLoc,&theRect))
- return (temp->GetmyObj());
- }
- return nil;
- }
-
- void TObjList::RemoveObj(TDisplObj* obj)
- {
- if (obj != nil)
- {
- TObjLink* temp;
- TObjLink* last;
-
- last = nil;
- for (temp = fHeader; temp != nil; temp = temp->GetNext())
- if (temp->GetmyObj() == obj)
- {
- if (last == nil) // if first item in list, just set first
- fHeader = temp->GetNext();
- else last->SetNext(temp->GetNext());
- delete temp; // free the TObjLink
- fNumObjs--;
- return;
- }
- else last = temp;
- }
- }
-
- TDisplObj::TDisplObj(Rect r) { fBoundRect = r; SetObjPat(qd.gray); }
-
- void TDisplObj::SetObjPat(Pattern pat)
- { for (int i=0; i<8; i++) fObjPat[i] = pat[i]; }
-
- void TDisplObj::DragObj(Point *theLoc, Rect theRect)
- {
- RgnHandle theRgn = NewRgn();
- OpenRgn();
- this->Draw(fObjPat);
- CloseRgn(theRgn);
-
- long res = DragGrayRgn(theRgn,*theLoc,&theRect,&theRect,0,0);
- if (LoWord(res) != 0x8000)
- {
- theLoc->v += HiWord(res);
- theLoc->h += LoWord(res);
- }
-
- DisposeRgn(theRgn);
- }
-
- TRoundRect::TRoundRect(Rect r) : (r) // Calls base class constructor
- { fOvalWidth = 20;
- fOvalHeight = 15; }
-
- void TRoundRect::Draw(Pattern pat)
- { PenNormal();
- FillRoundRect(&fBoundRect, fOvalWidth, fOvalHeight, pat);
- FrameRoundRect(&fBoundRect, fOvalWidth, fOvalHeight); }
-
- void TRoundRect::Erase()
- { EraseRoundRect(&fBoundRect, fOvalWidth, fOvalHeight); }
-
- TRect::TRect(Rect r) : (r) {}
-
- void TRect::Draw(Pattern pat)
- { PenNormal();
- FillRect(&fBoundRect, pat);
- FrameRect(&fBoundRect); }
-
- void TRect::Erase()
- { EraseRect(&fBoundRect); }
-
- TOval::TOval(Rect r) : (r) {}
-
- void TOval::Draw(Pattern pat)
- { PenNormal();
- FillOval(&fBoundRect, pat);
- FrameOval(&fBoundRect); }
-
- void TOval::Erase()
- { EraseOval(&fBoundRect); }
-